import axios from 'axios'

const service = axios.create({
  // api 的 baseUrl 就是每个请求前面相同的地址，这个地方因为我配置了环境，所以直接取环境里的配置
  baseURL: '', 
  timeout: 5000 // 请求超时时间
})
 
// // // request拦截器
// // service.interceptors.request.use(
// //   config => {
// //     //这里是每个请求的设置，比如每个请求都携带一个token，或者当为post请求时，引入qs格式化参数。
// //     return config
// //   },
// //   error => {
// //     console.log('请求失败:' + error)
// //     Promise.reject(error)
// //   }
// // )
 
// // // response 拦截器
// // service.interceptors.response.use(
// //   response => {
// //     const res = response.data
// //     //这个地方的code自己与后台约定(可以根据状态码，设置自己要提示的信息)
// //     if (res._code !== '10000') {
// //       //在此可以加几种比较普遍的设置，然后可以把单独的返到页面中设置
// //       return Promise.reject(res)
// //     } else {
// //       return response.data
// //     }
// //   },
// //   error => {
// //     console.log('响应失败:' + error)
// //     return Promise.reject(error)
// //   }
// // )




service.interceptors.request.use(function(config){
  const token = localStorage.getItem('token');
  if(token){
        config.headers['Authorization']= 'Bearer '+ token;
  }
    return config;
  },function(error){
    return Promise.reject(error);
  });

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token，对请求参数统一加密
service.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8';
  
 // config.headers['token'] = user.token;  // 设置请求头
    return config
}, error => {
    return Promise.reject(error)
});

// response 拦截器
// 可以在接口响应后统一处理结果
service.interceptors.response.use(
    response => {
        let res = response.data;
        // 如果是返回的文件
        if (response.config.responseType === 'blob') {
            return res
        }
        // 兼容服务端返回的字符串数据
        if (typeof res === 'string') {
            res = res ? JSON.parse(res) : res
        }
        return res;
    },
    error => {
        console.log('err' + error) // for debug
        return Promise.reject(error)
    }
)


export default service

